package io;

import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * @author Luka
 * @date 2021/05/28 09:13
 *
 * 复制文件
 **/
public class CopyDemo {
    public static void main(String[] args) throws Exception {
        /*
            创建一个文件流输入到原文件
            创建一个输出流到要复制的目标文件
            循环输入流读取原文件的内容通过输出流写入目标文件
         */
        FileOutputStream fos = new FileOutputStream("D:\\IDEA_WorkSpace\\JSD2104_SE/tts911.rar");
        FileInputStream fis = new FileInputStream("D:\\IDEA_WorkSpace\\JSD2104_SE/tts9.rar");
        /*
            原文件数据 11111111 00011000 00000000 00100010 11001100

            d = fis.read();

            d =      00000000 00000000 00000000 00000000 11111111(从首位开始读)

            d = fos.write(d)

            复制文件数据:
            11111111
         */
        int d;//用于记录每次独到的字节,必须要有d 不能直接用fis.read()来判断因为循环中信息可能会因为读取次数太多丢失
        while ((d = fis.read())!=-1){
            fos.write(d);
        }
        System.out.println("复制完毕");


        long start  = System.currentTimeMillis();
        while((start = fis.read())!=-1){
            fos.write(d);
        }
        long ends = System.currentTimeMillis();
        System.out.println("复制完毕,耗时"+(ends-start)+"毫秒");

        fis.close();
        fis.close();//完成操作 关口
        fos.close();
    }
}